<?php


/*
微信直连API
*/


//生成随机单号
$number = mt_rand(13021003,999999999);
echo $number;
echo "<br/><hr>";


//获取时间戳
$currentTime = date("YmdHis");


/*
  meta_option处理；
   注：{"s":"WAP","n":"网站名","id":"首页URL"}汉字编码GBK，需要base64
*/

$String = array(
    "s" => 'Android',
    "n" => '手机游戏',
    "id" => 'com.gamecenter.sdk.demosp',
);
$jsonString =json_encode($String,JSON_UNESCAPED_UNICODE);
echo 'meta_option的原始值'.$jsonString;
echo "<br/><hr>";
$encodedJsonString = iconv('utf-8', 'gbk', $jsonString);
$Newmeta_option = urlencode(base64_encode($encodedJsonString));



//定义参数值
$version = '1';//版本号
$scene = 'h5';//支付方式，h5表示h5，wxa表示小程序，qr表示扫码（如支付类型为扫码，payment_mode传UnifiedOrder返回二维码url），jsapi表示公众号（微信内拉起），app表示app拉起支付(值均为小写)
$pay_type = '30';//支付类型
$agent_id = '2083328';//商户编号
$ref_agent_id = '';//二级商户号（集团商户模式传参），传了必须参与签名放在key后面
$agent_bill_id = $number;//商户系统内部的订单号（要保证唯一）
$agent_bill_time = $currentTime;//提交单据的时间yyyyMMddHHmmss
$pay_amt = '0.01';//订单总金额
$notify_url = 'https://';//异步通知地址
$return_url = 'https://';//支付后返回的商户显示页面
$user_ip = '127.127.12.12';//用户真实的IP 127_127_12_12
$payment_mode = 'cashier';//收银台=cashier，接口=UnifiedOrder（目前支持小程序，扫码，app）
$bank_card_type = '-1';//银行类型：未知=-1，储蓄卡=0，信用卡=1。
$goods_name = '测试';//商品名称，不能为空（不参加签名）
$remark = '41818032';//商户自定义，原样返回,可以为空。要是小程序传固定格式appid
$expire_time = '10';//订单过期相对时间，单位分钟，最低1分钟，最高4320分钟。
$meta_option = $Newmeta_option;
$key = '852B4A10455E49F280EEFCB1';//密钥

//请求参数中，中文需要GBK格式  URLencode编码
$GBKgoods_name = iconv('UTF-8', 'GBK', $goods_name);
$New_goods_name = urlencode($GBKgoods_name);



// 请求参数（使用 & 符号拼接）注：如果有子商户则子商户字段传值。

if (empty($ref_agent_id)){
    $data = "version=$version&agent_id=$agent_id&agent_bill_id=$agent_bill_id&agent_bill_time=$agent_bill_time&pay_type=$pay_type&pay_amt=$pay_amt&notify_url=$notify_url&return_url=$return_url&user_ip=$user_ip&bank_card_type=$bank_card_type&remark=$remark&key=$key";
    echo '待加密数据-------------->'.$data;
    echo "<br/><hr>";
    $sign = md5($data);
    echo '加密后数据'.$sign;
    echo "<br/><hr>";
    $param = "version=$version&agent_id=$agent_id&scene=$scene&payment_mode=$payment_mode&bank_card_type=$bank_card_type&agent_bill_id=$agent_bill_id&agent_bill_time=$agent_bill_time&pay_type=$pay_type&pay_amt=$pay_amt&notify_url=$notify_url&return_url=$return_url&user_ip=$user_ip&sign=$sign&goods_name=$New_goods_name&remark=$remark&meta_option=$meta_option";
    echo '待请求参数-------------->'.$param;
    echo "<br/><hr>";
}else{
    $data = "version=$version&agent_id=$agent_id&agent_bill_id=$agent_bill_id&agent_bill_time=$agent_bill_time&pay_type=$pay_type&pay_amt=$pay_amt&notify_url=$notify_url&return_url=$return_url&user_ip=$user_ip&bank_card_type=$bank_card_type&remark=$remark&key=$key&ref_agent_id=$ref_agent_id";
    echo '待加密数据-------------->'.$data;
    echo "<br/><hr>";
    $sign = md5($data);
    echo '加密后数据'.$sign;
    echo "<br/><hr>";
    $param = "version=$version&agent_id=$agent_id&scene=$scene&payment_mode=$payment_mode&bank_card_type=$bank_card_type&agent_bill_id=$agent_bill_id&agent_bill_time=$agent_bill_time&pay_type=$pay_type&pay_amt=$pay_amt&notify_url=$notify_url&return_url=$return_url&user_ip=$user_ip&sign=$sign&goods_name=$New_goods_name&remark=$remark&ref_agent_id=$ref_agent_id&meta_option=$meta_option";
    echo '待请求参数-------------->'.$param;
    echo "<br/><hr>";
}

//请求地址
$url = 'http://211.103.157.45/PayHeepay/DirectPay/applypay.aspx';

// 构建请求上下文
$options = array(
    'http' => array(
        'method' => 'POST',
        'header' => 'Content-Type: application/x-www-form-urlencoded',
        'content' => $param
    )
);
$context = stream_context_create($options);

// 发送 POST 请求
$response = file_get_contents($url, false, $context);


echo $response;


?>